package futbol.tacticas.concursantes.laponiafc;

/**
 * 
 * @author Galderic Punti
 * 
 * @date 06-06-2008
 * 
 */
public class Util {

	private static Util instance;

	private Util() {

	}

	final public static Util getInstance() {
		if (instance == null) {
			instance = new Util();
		}
		return instance;
	}

	public final Jugador jugadorMasCercanoAPunto(Jugador[] players, double x,
			double y, Equipo team, boolean mustBeIdle) {

		Jugador resultado = null;
		double minDistance = Double.MAX_VALUE;

		for (Jugador p : players) {
			if (Equipo.CUALQUIERA.equals(team)
					|| (Equipo.PROPIO.equals(team) && (p.id < LaponiaFC.NUM_JUGADORES))
					|| (Equipo.CONTRARIO.equals(team) && (p.id >= LaponiaFC.NUM_JUGADORES))) {

				double d = p.vm.cur.distance(x, y);

				if ((resultado == null)
						|| ((d < minDistance) && (!mustBeIdle || p.idle))) {
					resultado = p;
					minDistance = d;
				}
			}
		}
		return resultado;
	}

}